
/**
 * 发送 post 异步请求
 * @param {string} url      请求地址
 * @param {string} params   请求参数
 * @param {fn} callback     回调函数    
 * @param {object} header   请求头设置
 * @param {string} dataType 判断后端返回数据类型
 * @author TH_HAN  2022/1/12
 * @version 1.0.0
 * 
 */

 function post(url,params={},headers={},datatype='json')
 {
     return new Promise((resolve,reject)=>
     {
         const xhr = new XMLHttpRequest
         xhr.onreadystatechange=()=>
         {
             if(xhr.readyState===4){
                if( xhr.status===200)
                {  
                 let res = xhr.responseText
                 switch (datatype) 
                 {
                     case 'json':
                         res = JSON.parse(res)
                         break;
                 
                     default:
                         break;
                 }
                 resolve(res)
             }else
             {
                 reject(xhr.status)
             }
         }
         xhr.open('post',url)
         xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
         for(let key in headers)
         {
             xhr.setRequestHeader(key,headers[key])
         }
         let tempArr= [ ]
         for(let key in params)
         {
             tempArr.push(`${key}=${params[key]}`)
         }
         xhr.send(tempArr.join('&'))
     })
 }